<?php
/**
 * Класс Controller_Message отвечает за обработку страниц переписки пользователя
 * @author Mike
 */
class Controller_Message extends Controller_Base {
	
	public function action() {
		switch($this->arrRequest[1]) {
			case '':	// Страница последней переписки
				$currentUserId = User_Seance::getId();
				if(!$currentUserId) throw new Exception('', 404);	// Если пользователь незалогинен
				if(isset($_GET['user'])) {
					$objUser = new User_User($_GET['user']);
					if(!$objUser->id || $objUser->id == $currentUserId) $this->showMessageHistory();	// Если GET['user'] - левый, показываем историю всей переписки
					else $this->showChat($objUser);
				}
				else $this->showMessageHistory();
				break;
			default:
				throw new Exception('', 404);
				break;
		}
	}
	
	/**
	 * Страница переписки с конкретным пользователем
	 * 
	 * @param User_User $objUser - объект пользователя-собеседника
	 */
	public function showChat(User_User $objUser) {
		$objMessage = new Message();
		$arrMessages = $objMessage->find('all', array( 'select' => '`message`.`ID_message`, `message`.`ID_user_to`, `message`.`text`, `message`.`created_at`, `message`.`is_read_at`, `user`.`first_name`, `user`.`last_name`, `user`.`ID_user`',
				'joins' => 'INNER JOIN `user` USING(`ID_user`)',
				'conditions' => "(`message`.`ID_user` = '" . $objUser->id . "' AND `message`.`ID_user_to`='" . User_Seance::getId() ."' AND `message`.`del_by_user_to` = 0) OR (`message`.`ID_user` = '" . User_Seance::getId() . "' AND `message`.`ID_user_to`='" .  $objUser->id ."' AND `message`.`del_by_user` = 0)",
				'order' => '`message`.`created_at` DESC'));
		
		$this->bodyAttr = 'message-chat';
		$this->title = $objUser->getField('first_name') . ' ' .  $objUser->getField('last_name');
		
		$this->showHeader();
			View_Message::showChat($objUser, $arrMessages);
		$this->showFooter();
	}
	
	/**
	 * Страница всей последней переписки пользователя
	 */
	public function showMessageHistory() {
		$objMessage = new Message();
		$arrMessages = $objMessage->getMessageHistory();
	
		$this->bodyAttr = 'message-history';
		$this->title = 'Сообщения';
	
		$this->showHeader();
			View_Message::showMessageHistory($arrMessages);
		$this->showFooter();
	}
	
}
?>